#!/bin/bash
################### 自动化安装python脚本 #####################
# 执行之前：
# 	1. 去除特殊字符：sed -i 's/\r//' install_python.sh
# 	2. 添加执行权限：chmod +x install_python.sh
# 	3. 如果下载速度比较慢，可以提前将以下安装包上传到/opt/soft目录下：Python-3.10.6.tgz、openssl-1.1.1.tar.gz
# 执行命令：source install_python.sh
# 执行之后：需要将以下文件中第1行的python版本改成python2（否则无法使用yum安装命令）：
# 		/usr/bin/yum-config-manager
#		/usr/libexec/urlgrabber-ext-down
#		/usr/bin/yum
#		/usr/bin/firewall-cmd
#		/usr/sbin/firewalld
# 脚本说明：1. 脚本执行环境为CentOS7
#########################################################

echo "----------0.准备环境----------------"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
yum -y install libffi-devel
# 创建文件夹，用于存放下载的软件包和程序日志文件（当有多层目录时，需要加上：-p）
mkdir -p /opt/soft /home/logs
echo "准备环境OK"

echo "----------1.安装openssl----------------"
cd /opt/soft
# 如果下载比较慢，也可以提前上传安装包到/opt/soft，然后将该行命令注释掉
wget http://www.openssl.org/source/openssl-1.1.1.tar.gz --no-check-certificate
FILE_PATH=/opt/soft/openssl-1.1.1.tar.gz
if [ -e $FILE_PATH ]; then
    echo "$FILE_PATH存在"
else
    echo "$FILE_PATH不存在"
    exit 1
fi
# 解压
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
# 配置
./config --prefix=/usr/local/openssl shared zlib
# 编译
make
# 安装
make install
# 删除openssl原来软连接
 rm -rf /usr/bin/openssl
# 重新建立软连接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# 执行安装
cd /usr/local/openssl
ldd /usr/local/openssl/bin/openssl
# 追加到最后一行
echo /usr/local/openssl/lib >> /etc/ld.so.conf
# 重新加载配置
ldconfig /etc/ld.so.conf
echo "install openssl success!"
# 再次查看，输出：OpenSSL 1.1.1 表示安装成功
openssl version

echo "----------2.安装python3----------------"
cd /opt/soft
# 如果下载比较慢，也可以提前上传安装包到/opt/soft，然后将该行命令注释掉
#wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz
FILE_PATH=/opt/soft/Python-3.10.6.tgz
if [ -e $FILE_PATH ]; then
    echo "$FILE_PATH存在"
else
    echo "$FILE_PATH不存在"
    exit 1
fi
# 解压
tar -xvf Python-3.10.6.tgz
cd Python-3.10.6
# 配置
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl --with-openssl-rpath=no
# 编译
make
# 安装
make install
echo "install python3 success!"

echo "----------3.创建python软连接----------------"
rm -f /usr/bin/python
ln -s /usr/local/python3/bin/python3.10 /usr/bin/python
ln -s /usr/local/python3/bin/python3.10 /usr/bin/python3
rm -f /usr/bin/pip
ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip
ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip3
echo "create python3 soft link success!"

echo "----------4.配置python环境变量----------------"
cat >> /etc/profile << EOF
#set python_home
export PYTHONPATH=/usr/local/python3
export PATH=$PYTHONPATH/bin:$PATH

# python local params
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
EOF
# 使环境变量生效（子shell中执行不生效）
source /etc/profile
echo "set python env success!"

echo "----------5.测试python是否安装成功----------------"
echo "python -V: " $(python -V)
echo "python3 -V: " $(python3 -V)
echo "pip -V: " $(pip -V)
echo "pip3 -V: " $(pip3 -V)